home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / stdwin / H / stdwin.h < prev    next >
Text File  |  1995-12-21  |  11KB  |  344 lines

  1. /* STDWIN INTERFACE */
  2.  
  3. #ifndef __STDWIN_H__    /* Guard against multiple inclusion */
  4. #define __STDWIN_H__
  5.  
  6. #include "_ARGS.h"    /* Definition of _ARGS() macro */
  7.  
  8. #define werase w_erase    /* avoid conflict with termcap */
  9.  
  10.  
  11. /***********************************/
  12. /* Section 1.  Types and constants */
  13. /***********************************/
  14.  
  15.  
  16. /* These structs are implementation-dependent, the user only sees
  17.    pointers to them */
  18.  
  19. #define WINDOW struct _window
  20. #define MENU struct _menu
  21. #define CURSOR struct _cursor
  22. #define BITMAP struct _bitmap
  23.  
  24.  
  25. /* Fake window type used by the wgettag() and wsettag() macros */
  26.  
  27. struct _fakewindow {
  28.     short tag;
  29. };
  30.  
  31. #define _FAKEWINDOW struct _fakewindow
  32.  
  33.  
  34. /* EVENT struct */
  35.  
  36. struct _event {
  37.     int type;
  38.     WINDOW *window;
  39.     union {
  40.     /* case WE_CHAR: */
  41.         int character;
  42.     /* case WE_COMMAND: */
  43.         int command;
  44.     /* case WE_MENU: */
  45.         struct { int id; int item; } m;
  46.     /* case WE_DRAW: */
  47.         struct { int left, top, right, bottom; } area;
  48.     /* case WE_MOUSE_DOWN, WE_MOUSE_MOVE, WE_MOUSE_UP: */
  49.         struct {
  50.             int h;
  51.             int v;
  52.             int clicks;
  53.             int button;
  54.             int mask;
  55.         } where;
  56.     /* case WE_LOST_SEL: */
  57.         int sel;
  58.     /* case WE_KEY: */
  59.         struct { int code; int mask; } key;
  60.     } u;
  61. };
  62.  
  63. #define EVENT struct _event
  64.  
  65.  
  66. /* Event types */
  67. /* XXX Should be reordered */
  68.  
  69. #define WE_NULL        0    /* (Used internally) */
  70. #define WE_ACTIVATE    1    /* Window became active */
  71. #define WE_CHAR        2    /* Character typed at keyboard */
  72. #define WE_COMMAND    3    /* Special command, function key etc. */
  73. #define WE_MOUSE_DOWN    4    /* Mouse button pressed */
  74. #define WE_MOUSE_MOVE    5    /* Mouse moved with button down */
  75. #define WE_MOUSE_UP    6    /* Mouse button released */
  76. #define WE_MENU        7    /* Menu item selected */
  77. #define WE_SIZE        8    /* Window size changed */
  78. #define WE_MOVE        9    /* Window moved (reserved) */
  79. #define WE_DRAW        10    /* Request to redraw part of window */
  80. #define WE_TIMER    11    /* Window's timer went off */
  81. #define WE_DEACTIVATE    12    /* Window became inactive */
  82. #define WE_EXTERN    13    /* Externally generated event (Amoeba) */
  83. #define WE_KEY        14    /* Non-ASCII key event */
  84. #define WE_LOST_SEL    15    /* Lost selection */
  85. #define WE_CLOSE    16    /* User wants to close window */
  86.  
  87.  
  88. /* Special keys reported by WE_COMMAND */
  89. /* XXX Should become key events */
  90.  
  91. #define WC_CLOSE    1    /* Obsolete */
  92. /* The following four are arrow keys */
  93. #define WC_LEFT        2
  94. #define WC_RIGHT    3
  95. #define WC_UP        4
  96. #define WC_DOWN        5
  97. /* ASCII keys */
  98. #define WC_CANCEL    6
  99. #define WC_BACKSPACE    7
  100. #define WC_TAB        8
  101. #define WC_RETURN    9
  102. /* IBM-PC keys -- not in all implementations */
  103. /* XXX Should be done differently */
  104. #define WC_HOME        10
  105. #define WC_END        11
  106. #define WC_CLEAR    12
  107. #define WC_INS        13
  108. #define WC_DEL        14
  109. #define WC_PAGE_UP    15
  110. #define WC_PAGE_DOWN    16
  111. #define WC_META_LEFT    17
  112. #define WC_META_RIGHT    18
  113. #define WC_META_HOME    19
  114. #define WC_META_END    20
  115. #define WC_META_PAGE_UP    21
  116. #define WC_META_PAGE_DOWN    22
  117. /* XXX Should have entries for Alt-letter and F1-F10 etc. ? */
  118.  
  119.  
  120. /* Codes for selections (e.u.sel for WE_LOST_SEL) */
  121.  
  122. #define WS_CLIPBOARD    0
  123. #define WS_PRIMARY    1
  124. #define WS_SECONDARY    2
  125.  
  126.  
  127. /* Masks for EVENT->u.where.mask and EVENT->u.key.mask.
  128.    Some of these happen to be the same as the X11 masks (which are cast
  129.    in stone for eternity); the implementation relies on that.
  130.    (It is merely a convention that Meta is bit 3, and Option/Num aren't
  131.    normally used in X11.) */
  132.  
  133. #define WM_SHIFT    (1 << 0)
  134. #define WM_LOCK        (1 << 1)
  135. #define WM_CONTROL    (1 << 2)
  136. #define WM_META        (1 << 3)
  137. #define WM_OPTION    (1 << 4)
  138. #define WM_NUM        (1 << 5)
  139.  
  140. #define WM_BUTTON1    (1 << 8)
  141. #define WM_BUTTON2    (1 << 9)
  142. #define WM_BUTTON3    (1 << 10)
  143. #define WM_BUTTON4    (1 << 11)
  144. #define WM_BUTTON5    (1 << 12)
  145.  
  146.  
  147. /* TEXTATTR struct */
  148.  
  149. /* The contents of a text attributes struct are disclosed here because
  150.    the interface allows the programmer to declare objects of this type.
  151.    (I'm not so sure anymore that this is the right thing to do!) */
  152.  
  153. struct _textattr {
  154.     short font;
  155.     unsigned char size;
  156.     unsigned char style;
  157. };
  158.  
  159. #define TEXTATTR struct _textattr
  160.  
  161.  
  162. /* Color */
  163.  
  164. #define COLOR long
  165. #define BADCOLOR ((COLOR)(-1))
  166.  
  167.  
  168. /* Point type for wdrawpoly and wfillpoly -- compatible with X */
  169.  
  170. struct _point {
  171.     short h, v;
  172. };
  173. #define POINT struct _point
  174.  
  175.  
  176. /*************************************/
  177. /* Section 2.  Function declarations */
  178. /*************************************/
  179.  
  180.  
  181. void wargs _ARGS((int *pargc, char ***pargv));
  182. void winit _ARGS((void));
  183. void winitargs _ARGS((int *pargc, char ***pargv));
  184. void wdone _ARGS((void));
  185.  
  186. void wgetscrsize _ARGS((int *pwidth, int *pheight));
  187. void wgetscrmm _ARGS((int *pmmwidth, int *pmmheight));
  188. int wgetmouseconfig _ARGS((void));
  189.  
  190. void wsetmaxwinsize _ARGS((int width, int height));
  191. void wsetdefwinsize _ARGS((int width, int height));
  192. void wgetdefwinsize _ARGS((int *pwidth, int *pheight));
  193. void wsetdefwinpos _ARGS((int h, int v));
  194. void wgetdefwinpos _ARGS((int *ph, int *pv));
  195. void wsetdefscrollbars _ARGS((/*bool*/int hbar, /*bool*/int vbar));
  196. void wgetdefscrollbars _ARGS((/*bool*/int *phbar, /*bool*/int *pvbar));
  197. void wsetdefmenubar _ARGS((/*bool*/int mbar));
  198. int wgetdefmenubar _ARGS((void));
  199.  
  200. WINDOW *wopen _ARGS((char *title,
  201.         void (*drawproc)(/*WINDOW *win,
  202.                 int left, int top, int right, int bottom*/)));
  203. void wclose _ARGS((WINDOW *win));
  204. #define wgettag(win) (((_FAKEWINDOW *)(win)) -> tag)
  205. #define wsettag(win, newtag) (((_FAKEWINDOW *)(win)) -> tag = (newtag))
  206. void wsetactive _ARGS((WINDOW *win));
  207. WINDOW *wgetactive _ARGS((void));
  208. void wgetwinsize _ARGS((WINDOW *win, int *width, int *height));
  209. void wsetwinsize _ARGS((WINDOW *win, int width, int height));
  210. void wgetwinpos _ARGS((WINDOW *win, int *h, int *v));
  211. void wsetwinpos _ARGS((WINDOW *win, int h, int v));
  212. void wsetdocsize _ARGS((WINDOW *win, int width, int height));
  213. void wgetdocsize _ARGS((WINDOW *win, int *width, int *height));
  214. void wsettitle _ARGS((WINDOW *win, char *title));
  215. char *wgettitle _ARGS((WINDOW *win)); /* Returns pointer to static data */
  216.  
  217. void wsetorigin _ARGS((WINDOW *win, int h, int v));
  218. void wgetorigin _ARGS((WINDOW *win, int *h, int *v));
  219. void wshow _ARGS((WINDOW *win, int left, int top, int right, int bottom));
  220. void wchange _ARGS((WINDOW *win, int left, int top, int right, int bottom));
  221. void wscroll _ARGS((WINDOW *win, int left, int top, int right, int bottom,
  222.     int dh, int dv));
  223.  
  224. void wfleep _ARGS((void));
  225. void wmessage _ARGS((char *str));
  226. void wperror _ARGS((char *name));
  227. /*bool*/int waskstr _ARGS((char *prompt, char *buf, int buflen));
  228. int waskync _ARGS((char *question, int dflt));
  229. /*bool*/int waskfile _ARGS((char *prompt, char *buf, int buflen,
  230.                         /*bool*/int newfile));
  231.  
  232. void wsetcaret _ARGS((WINDOW *win, int h, int v));
  233. void wnocaret _ARGS((WINDOW *win));
  234.  
  235. void wsettimer _ARGS((WINDOW *win, int deciseconds));
  236.  
  237. MENU *wmenucreate _ARGS((int id, char *title));
  238. void wmenudelete _ARGS((MENU *mp));
  239. int wmenuadditem _ARGS((MENU *mp, char *text, int shortcut));
  240. void wmenusetitem _ARGS((MENU *mp, int i, char *text));
  241. void wmenusetdeflocal _ARGS((/*bool*/int local));
  242. void wmenuattach _ARGS((WINDOW *win, MENU *mp));
  243. void wmenudetach _ARGS((WINDOW *win, MENU *mp));
  244. void wmenuenable _ARGS((MENU *mp, int item, int flag));
  245. void wmenucheck _ARGS((MENU *mp, int item, int flag));
  246.  
  247. /* The following is only available in termcap stdwin: */
  248. void wsetshortcut _ARGS((int id, int item, char *keys));
  249.  
  250. void wgetevent _ARGS((EVENT *ep));
  251. /*bool*/int wpollevent _ARGS((EVENT *ep));
  252. void wungetevent _ARGS((EVENT *ep));
  253. void wupdate _ARGS((WINDOW *win));
  254. void wbegindrawing _ARGS((WINDOW *win));
  255. void wenddrawing _ARGS((WINDOW *win));
  256. void wflush _ARGS((void));
  257.  
  258. void wdrawline _ARGS((int h1, int v1, int h2, int v2));
  259. void wxorline _ARGS((int h1, int v1, int h2, int v2));
  260.  
  261. void wdrawbox _ARGS((int left, int top, int right, int bottom));
  262. void wpaint _ARGS((int left, int top, int right, int bottom));
  263. void winvert _ARGS((int left, int top, int right, int bottom));
  264. void werase _ARGS((int left, int top, int right, int bottom));
  265. void wshade _ARGS((int left, int top, int right, int bottom, int percent));
  266.  
  267. void wdrawcircle _ARGS((int h, int v, int radius));
  268. void wfillcircle _ARGS((int h, int v, int radius));
  269. void wxorcircle _ARGS((int h, int v, int radius));
  270.  
  271. void wdrawelarc _ARGS((int h, int v, int hrad, int vrad, int ang1, int ang2));
  272. void wfillelarc _ARGS((int h, int v, int hrad, int vrad, int ang1, int ang2));
  273. void wxorelarc _ARGS((int h, int v, int hrad, int vrad, int ang1, int ang2));
  274.  
  275. void wdrawpoly _ARGS((int n, POINT points[]));
  276. void wfillpoly _ARGS((int n, POINT points[]));
  277. void wxorpoly _ARGS((int n, POINT points[]));
  278.  
  279. void wcliprect _ARGS((int left, int top, int right, int bottom));
  280. void wnoclip _ARGS((void));
  281.  
  282. void wdrawtext _ARGS((int h, int v, char *str, int len));
  283. void wdrawchar _ARGS((int h, int v, int c));
  284. int wlineheight _ARGS((void));
  285. int wbaseline _ARGS((void));
  286. int wtextwidth _ARGS((char *str, int len));
  287. int wcharwidth _ARGS((int c));
  288. int wtextbreak _ARGS((char *str, int len, int width));
  289.  
  290. void wgettextattr _ARGS((TEXTATTR *attr));
  291. void wsettextattr _ARGS((TEXTATTR *attr));
  292. void wgetwintextattr _ARGS((WINDOW *win, TEXTATTR *attr));
  293. void wsetwintextattr _ARGS((WINDOW *win, TEXTATTR *attr));
  294.  
  295. void wsetplain _ARGS((void));
  296. void wsethilite _ARGS((void));
  297. void wsetinverse _ARGS((void));
  298. void wsetitalic _ARGS((void));
  299. void wsetbold _ARGS((void));
  300. void wsetbolditalic _ARGS((void));
  301. void wsetunderline _ARGS((void));
  302.  
  303. char **wlistfontnames _ARGS((char *, int *));
  304. int wsetfont _ARGS((char *fontname));
  305. void wsetsize _ARGS((int pointsize));
  306.  
  307. /* Colors */
  308. COLOR wfetchcolor _ARGS((char *colorname));
  309. void wsetfgcolor _ARGS((COLOR color));
  310. COLOR wgetfgcolor _ARGS((void));
  311. void wsetbgcolor _ARGS((COLOR color));
  312. COLOR wgetbgcolor _ARGS((void));
  313.  
  314. /* Setting the mouse cursor for a window */
  315. CURSOR *wfetchcursor _ARGS((char *name));
  316. void wsetwincursor _ARGS((WINDOW *win, CURSOR *cursor));
  317.  
  318. /* X11 Selection interface */
  319. /*bool*/int wsetselection _ARGS((WINDOW *, int, char *, int));
  320. void wresetselection _ARGS((int));
  321. char *wgetselection _ARGS((int, int *));
  322.  
  323. /* Cut buffer interface */
  324. void wsetcutbuffer _ARGS((int, char *, int));
  325. char *wgetcutbuffer _ARGS((int, int *));
  326. void wrotatecutbuffers _ARGS((int));
  327. void wsetclip _ARGS((char *, int));
  328. char *wgetclip _ARGS((void));
  329.  
  330. /* Bitmap operations */
  331. BITMAP *wnewbitmap _ARGS((int width, int height));
  332. void wfreebitmap _ARGS((BITMAP *bp));
  333. void wgetbitmapsize _ARGS((BITMAP *bp, int *p_width, int *p_height));
  334. void wsetbit _ARGS((BITMAP *bp, int h, int v, int bit));
  335. int wgetbit _ARGS((BITMAP *bp, int h, int v));
  336. void wdrawbitmap _ARGS((int h, int v, BITMAP *bp, BITMAP *maskp));
  337. #define ALLBITS ((BITMAP *)NULL)
  338.  
  339. /* Pull in definitions for TEXTEDIT package */
  340.  
  341. #include "stdwtext.h"
  342.  
  343. #endif /* __STDWIN_H__ */
  344.